// 1.聊天请求消息结构
// 请求:COMMAND_CHAT_REQ(11)
// 响应:COMMAND_CHAT_RESP(12)
var chat = "{" +
    "\"from\": \"来源ID\"," +
    "\"to\": \"目标ID\"," +
    "\"cmd\":\"11\"," +
    "\"createTime\": \"消息创建时间long类型\"," +
    "\"msgType\": \"消息类型int类型(0:text、1:image、2:voice、3:vedio、4:music、5:news)\"," +
    "\"chatType\":\"聊天类型int类型(0:未知,1:公聊,2:私聊)\"," +
    "\"group_id\":\"群组id仅在chatType为(1)时需要,String类型\"," +
    "\"content\": \"内容\"" +
    "}";

// 2.鉴权请求消息结构
// 请求:COMMAND_AUTH_REQ(3)
// 响应:COMMAND_AUTH_RESP(4)
var auth = "{" +
    "\"cmd\":\"3\"," +
    "\"token\": \"校验码\"" +
    "}";

// 3.握手请求消息结构
// 说明:请求:COMMAND_HANDSHAKE_REQ(1)
// 响应:COMMAND_HANDSHAKE_RESP(2)
var handshake = "{" +
    "\"cmd\":\"1\"," +
    "\"hbyte\":\"握手1个字节\"" +
    "}";

// 4.登录请求消息结构
// 请求:COMMAND_LOGIN_REQ(5)
// 响应:COMMAND_LOGIN_RESP(6)
var login = "{" +
    "\"cmd\":\"命令码(5)int类型\"," +
    "\"loginname\":\"用户名\"," +
    "\"password\":\"密码\"," +
    "\"token\":\"校验码(此字段可与logingname、password共存,也可只选一种方式)\"" +
    "}";

// 5.心跳请求消息结构
// 请求:COMMAND_HEARTBEAT_REQ(13)
// 响应:COMMAND_HEARTBEAT_REQ(13)

var heartbeat = "{" +
    "\"cmd\":\"命令码(13)int类型\"," +
    "\"hbbyte\":\"心跳1个字节\"" +
    "}";

// 6.关闭、退出请求消息结构
// 请求:COMMAND_CLOSE_REQ(14)
// 响应:无
var close = "{" +
    "\"cmd\":\"命令码(14)int类型\"," +
    "\"userid\":\"用户id\"" +
    "}";

// 7.获取用户信息请求消息结构
// 请求:COMMAND_GET_USER_REQ(17)
// 响应:COMMAND_GET_USER_RESP(18)
var obtain_user_info = "{" +
    "\"cmd\":\"命令码(17)int类型\"," +
    "\"userid\":\"用户id(必填项)\"," +
    "\"type\"\"获取类型(0:所有在线用户,1:所有离线线用户,2:所有用户[在线+离线])\"" +
    "}";

// 8.获取用户消息请求结构
// 请求:COMMAND_GET_MESSAGE_REQ(19)
// 响应:COMMAND_GET_MESSAGE_RESP(20)
var message = "{" +
    "\"cmd\":\"命令码(19)int类型\"," +
    "\"fromUserId\":\"消息发送用户id(此字段必须与userId一起使用,获取双方聊天消息),非必填\"," +
    "\"userId\":\"当前用户id(必填字段),当只有此字段时,type必须为0，意思是获取当前用户所有离线消息(好友+群组)\"," +
    "\"groupId\":\"群组id(此字段必须与userId一起使用,获取当前用户指定群组聊天消息),非必填\"," +
    "\"beginTime\":\"消息区间开始时间Date毫秒数double类型,非必填\"," +
    "\"endTime\":\"消息区间结束时间Date毫秒数double类型,非必填\"," +
    "\"offset\":\"分页偏移量int类型，类似Limit 0,10 中的0,非必填\"," +
    "\"count\":\"显示消息数量,类似Limit 0,10 中的10,非必填\"," +
    "\"type\":\"消息类型(0:离线消息,1:历史消息)\"" +
    "}";

// 9.好友申请
var friends_apply = "{" +
    "\"cmd\":\"21\"," +
    "\"appliedUserId\":\"被申请用户id\"," +
    "\"applyUserId\":\"申请用户id\"," +
    "\"applicationInformation\":\"申请信息\"" +
    "}";

// 10.获取当前用户的好友申请列表   返回operate： 0-申请中 1-接受  2-拒绝 3- 忽略
var apply_list = "{" +
    "\"cmd\":\"23\"
    "}";

// 11.好友申请处理
var friends_apply_operate = "{" +
    "\"cmd\":\"25\"," +
    "\"applyUserId\":\"申请用户id\"," +
    "\"operate\":\"1-接受  2-拒绝 3- 忽略\"" +
    "}";

// 12、创建群组
var create_group = "{" +
    "\"cmd\":\"27\"," +
    "\"userIds\":\"多个用户id（用逗号分割）\"" +
    "}";

// 13、组内人员的新增（与移除）   + 删除好友
var inner_group_member = "{" +
    "\"cmd\":\"29\"," +
    "\"groupId\":\"群组id\"," +
    "\"targetId\":\"准备新增或者移除的目标用户id\"," +
    "\"type\":\"操作类型(1:新增用户,2:移除用户)\"" +
    "}";

// 14、群聊 ->  1、chatType =1



// 9.自定义的处理器
var handler = "{" +
    "\"cmd\":\"50\"," +
    "\"loginname\":\"用户名\"," +
    "\"password\":\"密码\"," +
    "\"token\":\"WWWWWWWWWWWWWWWWWWWWWWWWWW\"" +
    "}";





//####################################################################################################################
// 以上消息体结构可以通过http接口请求：/api/message/send
// 判断用户是否在线     http接口请求：/api/user/online  参数：userid
// 关闭指定用户         http接口请求：/apiuser/close    参数：userid
// 1、获取ip和端口（用来与后端进行点对点的通信）
// http接口请求：/getServerConfig
// 返回报文格式：
// {
//     "port": 6789,
//     "ip": "192.168.1.43"
// }
// 2.用户信息同步接口
// http接口请求：/userInfoSync
// 参数：
//     `username` varchar(50) DEFAULT NULL COMMENT '用户名',
//     `password` varchar(100) DEFAULT NULL COMMENT '密码',
//     `nick` varchar(50) DEFAULT NULL COMMENT '昵称',
//     `salt` varchar(50) DEFAULT NULL COMMENT '盐值',
//     `block_addr` varchar(100) DEFAULT NULL COMMENT '区块地址',
//     `referral_code` varchar(100) DEFAULT NULL COMMENT '推荐码',
//     `avatar` varchar(100) DEFAULT NULL COMMENT '用户头像',
//     `status` int(50) DEFAULT NULL COMMENT '在线状态 1-在线 2-离线',
//     `sign` varchar(200) DEFAULT NULL COMMENT '个性签名',
//     `address` varchar(200) DEFAULT NULL COMMENT '地址',
//     `sex` int(10) DEFAULT NULL COMMENT '性别',
//     `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
//     `date_of_birth` datetime DEFAULT NULL COMMENT '出生日期',
//     `phone` varchar(20) DEFAULT NULL COMMENT '电话',
//     `remark` varchar(200) DEFAULT NULL COMMENT '备注',
//
// 返回报文格式：
// 成功：
// SUCCESS
// 失败：
// Pass in a username or blockAddr

// 3.用户信息修改接口
// http接口请求：/userInfoUpdate
// 参数：
//     `username` varchar(50) DEFAULT NULL COMMENT '用户名',
//     `password` varchar(100) DEFAULT NULL COMMENT '密码',
//     `nick` varchar(50) DEFAULT NULL COMMENT '昵称',
//     `salt` varchar(50) DEFAULT NULL COMMENT '盐值',
//     `block_addr` varchar(100) DEFAULT NULL COMMENT '区块地址',
//     `referral_code` varchar(100) DEFAULT NULL COMMENT '推荐码',
//     `avatar` varchar(100) DEFAULT NULL COMMENT '用户头像',
//     `status` int(50) DEFAULT NULL COMMENT '在线状态 1-在线 2-离线',
//     `sign` varchar(200) DEFAULT NULL COMMENT '个性签名',
//     `address` varchar(200) DEFAULT NULL COMMENT '地址',
//     `sex` int(10) DEFAULT NULL COMMENT '性别',
//     `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
//     `date_of_birth` datetime DEFAULT NULL COMMENT '出生日期',
//     `phone` varchar(20) DEFAULT NULL COMMENT '电话',
//     `remark` varchar(200) DEFAULT NULL COMMENT '备注',
//     `gmt_create` datetime DEFAULT NULL COMMENT '创建时间',
//     `gmt_modified` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
//     `is_deleted` tinyint(1) DEFAULT '0' COMMENT '是否逻辑删除：1-删除，0-未删除',
// 条件参数：
//     `block_addr` varchar(100) DEFAULT NULL COMMENT '区块地址',
//
// 返回报文格式：
// 成功：
// SUCCESS
// 失败：
// Pass in a username or blockAddr